The present invention relates generally to digital communication systems. More specifically, the invention relates to a system and method for spreading a data signal for spread spectrum communications
A communication system typically transmits information or data using a continuous frequency carrier with modulation techniques that vary its amplitude, frequency or phase. The information to be transmitted is mapped onto a predetermined constellation that defines symbols and is transmitted over a communication medium. The communication medium may be guided or unguided, (comprising copper, optical fiber or air) and is commonly referred to as the communication channel.
Deployed communication systems rarely are single access. A prior art multiple-access communication system is shown in FIG. 1. Protocols such as time division multiple access (TDMA), carrier sense multiple access (CSMA), code division multiple access (CDMA) and frequency related protocols such as frequency division multiple access (FDMA) and orthogonal frequency division multiplexing (OFDM) allow a plurality of users to access the same communication media to transmit or receive information. These techniques can be mixed together creating hybrid varieties of multiple-access communication schemes such as time division duplex (TDD). The access protocol specified by a communication system is typically executed after the data undergoes modulation.
Prior art modulation techniques that are in use are frequency modulation (FM), frequency shift keying (FSK), phase shift keying (PSK), binary phase shift keying (BPSK) and differential phase shift keying (DPSK). The most commonly used high-speed methods for data modulation are quadrature amplitude modulation (QAM) and quadrature phase shift keying (QPSK). These techniques vary a predefined carrier frequency amplitude and phase according to an input signal to transmit multiple bits per baud thereby using available bandwidth more efficiently.
To extend the possible range of data signal values, quadrature modulation assigns a symbol to represent more than two binary values. The use of a symbol allows for a greater degree of transmitted information since the bit content of each symbol dictates a unique pulse shape. Symbols, which consist of x bits per sample, may represent a quantized version of an analog sample or digital data. Depending upon the number of symbols used, an equal number of unique pulseshapes or waveshapes exist. The number of data bits determine the combinations of amplitude and phase that define a constellation pattern.
Quadrature modulation is based on two distinct waveforms that are orthogonal to each other. If two waveforms are transmitted simultaneously and do not interfere with each other, they are orthogonal. Quadrature modulation modulates two different signals into the same bandwidth creating a two-dimensional signal space as shown in FIG. 2. Two waveforms generally used for quadrature modulation are sine and cosine waveforms at the same frequency. The waveforms are defined as:s1(t)=A cos(2πfct)  (1)and;s2(t)=A sin(2πfct)  (2)where fc is the carrier frequency of the modulated signal and A is the amplitude applied to both signals. By convention, the cosine carrier is called the in-phase (I), real component of the signal and the sine carrier is the quadrature (Q), imaginary component of the signal. Linear combinations of the form a1 cos(2πfct)+a2 sin(2πfct), (where a1 and a2 are real numbers), generated from the two basic waveforms define symbols in the modulation alphabet. The symbols can be represented as complex numbers, a1+ja2, where j is defined as j=√{square root over (−1)}
A QAM symbol consists of at least one sample from both the in-phase I and quadrature Q signals. Signal amplitude is indicated by the distance from the origin; phase by the angular distance around the unit circle. After the data is assembled as symbols, the symbols are processed in accordance with an access protocol chosen for the communication system.
A prior art CDMA communication system is shown in FIG. 3. CDMA is a communication technique in which data is transmitted with a broadened band (spread spectrum) by modulating the data to be transmitted with a pseudo-noise sequence. The data signal to be transmitted may have a bandwidth of only a few thousand Hertz distributed over a frequency band that may be several million Hertz. The communication channel is used simultaneously by k independent subchannels. For each subchannel k, all other subchannels appear as interference.
As shown, a single subchannel of a given bandwidth is mixed with a unique spreading code which repeats a predetermined pattern generated by a wide bandwidth, pseudo-noise (pn) sequence generator. These unique user spreading codes are typically pseudo-orthogonal to one another such that the cross-correlation between the spreading codes is close to zero. The spreading codes in a CDMA system are chosen to minimize interference between a desired subchannel and all other subchannels. A data signal is multiplied with the pn-sequence to spread the data signal and produce a digital spread spectrum signal. A carrier signal is modulated with the digital spread spectrum signal and transmitted on the communication channel. A receiver demodulates the transmission to extract the digital spread spectrum signal. The transmitted data is reproduced after correlation with the matching pn sequence. When the spreading codes are orthogonal with one another, the received signal can be correlated with a particular user signal related to a particular spreading code such that only the desired user signal related to the particular spreading code is enhanced, while the other signals for all other users are not enhanced.
Each element of the spreading code is known as a chip and belongs to the set {1, −1}. The chip frequency or rate is the same or faster than the data rate. The ratio between the chip rate and the subchannel data rate is referred to as the spreading factor and is equal to the number of chips that are used to spread one symbol of user data. The number of chips is divisible by the largest spreading factor allowed. The larger the spreading factor, the more resistant a symbol is to noise and interference. For the case of synchronous CDMA, a symbol from the user with the largest spreading factor may constitute an entire block of data.
CDMA is one access protocol called for in the proposed 3rd generation wireless communication standards. Shown in FIG. 4 is a system architecture of a CDMA spreader making use of variable spreading factors. Variable spreading factors allow a transmitter to fine tune overall system processing gain. Higher data rate users are assigned spreading codes having a lower spreading factor at the expense of reduced processing gain. Lower data rate users are assigned spreading codes having a higher spreading factor. Therefore, the overall bandwidth of the spread signal of all users is maintained to be the same.
To reduce the overall number of spreading codes for each user in a given communication system, different spreading codes are used for cell separation and user separation, resulting in a two-part spreading operation for each subchannel. Channelization codes are used for user separation and scrambling codes for cell separation. Although a two-part spreading operation is characteristic of cellular CDMA systems, a single spreading operation may be used in other applications. Here, the channelization and scrambling codes are replaced by a single code that separates each user.
To effect the spreading operation of k subchannel users in a physical system, linear spreading methods are executed as fixed gate arrays, microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs) and the like. Fixed logic systems allow for greater system speed while microprocessor driven systems offer programming flexibility. Either implementation that is responsible for performing the spreading functions perform a sequence of mathematical operations. The following variables typically define the structure and operation of a spreader:                c=the real integer channelization spreading code presented as a vector for subchannel k corresponding with a given spreading factor SF. The length of the channelization code c varies with different spreading factors SF.        d=the data transmitted in a subchannel k.        d=the data in a subchannel k after modulation. The data is presented in the form of a vector, where a vector is an array of data indexed by a single index variable. For the purposes of vector operations which follow, all vectors are defined as column vectors.        k=one subchannel, (k=1, 2, 3, . . . K).        N=the number of data symbols in a group of the kth subchannel, (N=SFmax/SF). For the case of synchronous CDMA, a symbol from the user with the largest spreading factor may constitute an entire block of data. Each subchannel k has its own group size N where N can equal 1 (for SF=SFmax) to SFmax/SFmin.        i=the ith symbol of data d, (i=1, 2, 3, . . . N).        n=the element reference of a vector, ([n]).        SF=the spreading factor of subchannel k.        SFmin=the minimum spreading factor of the communication system.        SFmax=the maximum spreading factor of the communication system.        v=the real, integer part of the scrambling code.        {tilde over (v)}=the complex scrambling code presented as a vector of length SFmax. {tilde over (v)}[n]=jn·v[n], where n=1 . . . SFmax. Note that v[n] & {tilde over (v)}[n] reference the nth element of the vectors v & {tilde over (v)}. Thus, {tilde over (v)}[n]=jn·v[n] defines the rule for deriving the nth element of {tilde over (v)} from the nth element of v.        zi=the final spread chip sequence resulting from the application of the channelization and scrambling codes on the ith symbol of subchannel k. zi[n]=di·c[n]·jSF(i−1)+n·v[SF(i+1)+n], where n=1 . . . SF. zi is SF chips long; the spreading factor chosen for that particular subchannel k. N such SF long zi form z of length SFmax.        
To simplify the description that follows, a two-part, prior art spreader for a kth subchannel is discussed. One skilled in this art appreciates that a plurality of k spread subchannels can be summed as shown in FIG. 4. After data has been modulated, where data d of subchannel k is assembled as symbols defining a predetermined constellation, a sequence of complex data symbols d is divided into groups containing N symbols each, defined by:
                    N        =                                            SF              max                        SF                    .                                    (        3        )            Each complex data symbol d within a group of N symbols is spread by a real integer channelization code c of length SF chips. The channelization code c is unique to a user k. All N channelization code c spread symbols d of the group N are concatenated.
The resulting spread symbol sequence SFmax chips long is multiplied by a complex scrambling code {tilde over (v)} of length SFmax to produce a final chip sequence z of length SFmax. The scrambling code {tilde over (v)} is derived from a real integer scrambling code v multiplied with a complex operator jn. The relation is:{tilde over (v)}[n]=jn·v[n], where n=1 . . . SFmax.  (4)
The result of the two-part spreading process is a vector z of length SFmax chips. This vector z can be expressed as a concatenation of N subvectors, zi, where i=1, 2, 3, . . . N, where zi is defined as the segment of length SF chips within z that represents the contribution of subchannel k's ith spread symbol, di, in the group. The nth element of zi is given by:zi[n]=di·c[n]·jSF(i−1)+n·v[SF(i+1)+n], where n=1, . . . SF and i=1, 2, 3, . . .  (5)v[SF(i+1)+n], where n=1, . . . SF, defines a different set of SF elements of v, starting with the (SF(i−1)+1)th element depending upon i.
Implementing the two-code spreading operation defined by Equation 5 would require 8(N)(SF) integer multiplications to spread a symbol sequence d of length N symbols for one subchannel k. 2(SF) multiplications are required for the di·c[n] (where n=1, . . . SF) product (for one symbol) and 2(SF) multiplications are required for the jSF(i−1)+n·v[n] product (for one symbol) (where n=1, . . . SF) since di and jn are complex numbers multiplied with real numbers. Since both intermediate products are complex, the partial product multiplication requires four operations per symbol yielding a total of 8(N)(SF) multiplications.
In order to conserve power for operation in a mobile/portable communication system while increasing data throughput, an efficient process is needed to implement multiple code spreading operations.